package it.polimi.traveldream.persistence;

import java.io.Serializable;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

import java.util.LinkedList;
import java.util.List;


/**
 * The persistent class for the localita database table.
 * 
 */
@Entity
@NamedQuery(name="Localita.findAll", query="SELECT l FROM Localita l")

public class Localita implements Serializable {
	private static final long serialVersionUID = 1L;

	public static final String FIND_ALL = "Localita.findAll";

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int IDLocalita;

	@NotNull
	private String descrizione;

	@NotNull
	private String nome;
	@NotNull
	private String provincia;
	@NotNull
	private String stato;

	//bi-directional many-to-one association to Aeroporto
	@OneToMany(mappedBy="localita")
	private List<Aeroporto> aeroporti = new LinkedList<Aeroporto>();

	//bi-directional many-to-one association to Hotel
	@OneToMany(mappedBy="localita")
	private List<Hotel> hotels = new LinkedList<Hotel>();

	//bi-directional many-to-one association to Tour
	@OneToMany(mappedBy="localita")
	private List<Tour> tours = new LinkedList<Tour>();

	public Localita() {
	}

	public int getIDLocalita() {
		return this.IDLocalita;
	}

	public void setIDLocalita(int IDLocalita) {
		this.IDLocalita = IDLocalita;
	}

	public String getDescrizione() {
		return this.descrizione;
	}

	public void setDescrizione(String descrizione) {
		this.descrizione = descrizione;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getProvincia() {
		return this.provincia;
	}

	public void setProvincia(String provincia) {
		this.provincia = provincia;
	}

	public String getStato() {
		return this.stato;
	}

	public void setStato(String stato) {
		this.stato = stato;
	}

	public List<Aeroporto> getAeroporti() {
		return this.aeroporti;
	}

	public void setAeroporti(List<Aeroporto> aeroportos) {
		this.aeroporti = aeroportos;
	}

	public Aeroporto addAeroporto(Aeroporto aeroporto) {
		getAeroporti().add(aeroporto);
		aeroporto.setLocalita(this);

		return aeroporto;
	}

	public Aeroporto removeAeroporto(Aeroporto aeroporto) {
		getAeroporti().remove(aeroporto);
		aeroporto.setLocalita(null);

		return aeroporto;
	}

	public List<Hotel> getHotels() {
		return this.hotels;
	}

	public void setHotels(List<Hotel> hotels) {
		this.hotels = hotels;
	}

	public Hotel addHotel(Hotel hotel) {
		getHotels().add(hotel);
		hotel.setLocalita(this);

		return hotel;
	}

	public Hotel removeHotel(Hotel hotel) {
		getHotels().remove(hotel);
		hotel.setLocalita(null);

		return hotel;
	}

	public List<Tour> getTours() {
		return this.tours;
	}

	public void setTours(List<Tour> tours) {
		this.tours = tours;
	}

	public Tour addTour(Tour tour) {
		getTours().add(tour);
		tour.setLocalita(this);

		return tour;
	}

	public Tour removeTour(Tour tour) {
		getTours().remove(tour);
		tour.setLocalita(null);

		return tour;
	}

}